package com.shrct.businessprocess.customerservice;

import com.shrct.businessprocess.customerservice.RCRequireStatus;
import com.shrct.businessprocess.customerservice.RCRoutineServiceInfoStatus;
import com.shrct.businessprocess.customerservice.impl.RCRoutineServiceInfoImpl;
import com.shrct.businessprocess.customerservice.proxy.RCRoutineServiceInfoProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCRoutineServiceInfoImpl.class)
public interface RCRoutineServiceInfo extends IModelObject {
  public abstract RCRequireStatus getRequireRoutineService();
  
  public abstract RCRoutineServiceInfo setRequireRoutineService(final RCRequireStatus requireRoutineService);
  
  public abstract Date getServiceStart();
  
  public abstract RCRoutineServiceInfo setServiceStart(final Date serviceStart);
  
  public abstract Date getServiceEnd();
  
  public abstract RCRoutineServiceInfo setServiceEnd(final Date serviceEnd);
  
  public abstract Integer getServicePeriod();
  
  public abstract RCRoutineServiceInfo setServicePeriod(final Integer servicePeriod);
  
  public abstract String getComment();
  
  public abstract RCRoutineServiceInfo setComment(final String comment);
  
  public abstract RCRoutineServiceInfoStatus getStatus();
  
  public abstract void start();
  
  public abstract void setAsNotRequired();
  
  public abstract void setAsRequired();
  
  public abstract void cancel();
  
  public abstract void updateInfo(final Procedure1<? super RCRoutineServiceInfo> preInit);
  
  public abstract void schedule();
  
  public abstract Boolean isWaiting4Initialize();
  
  public abstract Boolean isNotRequired();
  
  public abstract Boolean isReady4Schedule();
  
  public abstract Boolean isScheduled();
  
  public abstract RCRoutineServiceInfoProxy toProxy();
}
